package in.rob.client.page;
import in.lib.Constants;
import in.lib.adapter.PostAdapter;
import in.lib.event.DeletePostEvent;
import in.lib.event.NewPostEvent;
import in.lib.handler.streams.KeywordResponseHandler;
import in.lib.handler.streams.TagPostsResponseHandler;
import in.lib.helper.ResponseHelper;
import in.lib.manager.APIManager;
import in.lib.manager.SettingsManager;
import in.lib.utils.ArrayUtils;
import in.model.Post;
import in.rob.client.page.base.PostStreamFragment;
import lombok.Getter;
import lombok.Setter;
import android.os.Bundle;
import com.squareup.otto.Subscribe;
public class TagSearchPage extends PostStreamFragment
{
@Getter @Setter private int pageIndex = 1;
private String mTag;
@Override public void retrieveArguments(Bundle arguments)
{
super.retrieveArguments(arguments);
if (arguments != null)
{
mTag = arguments.getString(Constants.EXTRA_TAG_NAME);
}
}
@Override public void setupAdapters()
{
super.setupAdapters();
((PostAdapter)getAdapter()).setShowMuted(true);
}
@Override public void fetchStream(String lastId, final boolean append)
{
if (mTag.startsWith("#") || !SettingsManager.isKeywordSearchEnabled())
{
TagPostsResponseHandler handler = new TagPostsResponseHandler(getContext(), append);
handler.setResponseKey(getResponseKeys()[0]);
ResponseHelper.getInstance().addResponse(getResponseKeys()[0], handler, this);
APIManager.getInstance().searchPosts(mTag.replace("#", ""), lastId, handler);
}
else
{
KeywordResponseHandler handler = new KeywordResponseHandler(getContext(), append);
handler.setResponseKey(getResponseKeys()[0]);
ResponseHelper.getInstance().addResponse(getResponseKeys()[0], handler, this);
APIManager.getInstance().keywordSearch(mTag, lastId, handler);
}
}
@Override public String[] getResponseKeys()
{
return new String[]{String.format(Constants.RESPONSE_TAG_SEARCH, mTag)};
}
@Override public String getCacheFileName()
{
return null;
}
@Subscribe @Override public void onPostRecieved(NewPostEvent event)
{
Post p = event.getPost();
if (p != null)
{
if (ArrayUtils.indexOf(mTag, p.getHashTags()) > -1)
{
prependItem(p);
}
}
}
@Subscribe @Override public void onPostDeleted(DeletePostEvent event)
{
super.onPostDeleted(event);
}
}